package net.towee.client.com.stuff;

import net.towee.client.com.stuff.presenter.GroupInformationShowerPresenter;
import net.towee.client.com.stuff.presenter.GroupRequestShowerPresenter;
import net.towee.client.com.stuff.presenter.GroupRolesShowerPresenter;
import net.towee.client.com.stuff.presenter.GroupShowerPresenter;
import net.towee.client.com.stuff.presenter.GroupUsersShowerPresenter;
import net.towee.client.com.stuff.presenter.GroupsCreatorPresenter;
import net.towee.client.com.stuff.presenter.GroupsFinderPresenter;
import net.towee.client.com.stuff.presenter.StuffPresenter;
import net.towee.client.com.stuff.view.GroupInformationView;
import net.towee.client.com.stuff.view.GroupRolesShowerView;
import net.towee.client.com.stuff.view.GroupShowerView;
import net.towee.client.com.stuff.view.GroupUsersShowerView;
import net.towee.client.com.stuff.view.GroupsCreatorView;
import net.towee.client.com.stuff.view.GroupsFinderView;
import net.towee.client.com.stuff.view.StuffView;

import com.google.gwt.inject.client.AbstractGinModule;
import com.google.inject.Singleton;

public class StuffModule extends AbstractGinModule {

	@Override
	protected void configure() {
		// Stuff main
		bind(Stuff.class).to(StuffPresenter.class).in(Singleton.class);
		bind(StuffPresenter.Display.class).to(StuffView.class);
		
		// Finder
		bind(GroupsFinder.class).to(GroupsFinderPresenter.class).in(Singleton.class);
		bind(GroupsFinderPresenter.Display.class).to(GroupsFinderView.class).in(Singleton.class);
		
		// Group shower
		bind(GroupShower.class).to(GroupShowerPresenter.class);
		bind(GroupShowerPresenter.Display.class).to(GroupShowerView.class);
		bind(GroupInformationShower.class).to(GroupInformationShowerPresenter.class);
		bind(GroupInformationShowerPresenter.Display.class).to(GroupInformationView.class);
		bind(GroupRequestsShower.class).to(GroupRequestShowerPresenter.class);
		bind(GroupUsersShower.class).to(GroupUsersShowerPresenter.class);
		bind(GroupUsersShowerPresenter.Display.class).to(GroupUsersShowerView.class);
		bind(GroupRolesShower.class).to(GroupRolesShowerPresenter.class);
		bind(GroupRolesShowerPresenter.Display.class).to(GroupRolesShowerView.class);
		
		// Creator
		bind(GroupsCreator.class).to(GroupsCreatorPresenter.class).in(Singleton.class);
		bind(GroupsCreatorPresenter.Display.class).to(GroupsCreatorView.class).in(Singleton.class);
	}

}
